Personal electronic devices such as personal computers, personal digital assistants (PDA), wireless telephones and pagers have become prevalent in recent years. These devices may communicate over wireless and/or wireline networks using various capabilities related to data, audio and video communication. The networks provide interconnection of these devices with information sources as well as other similar devices. Commonly, the networks include communication over the Internet.
Devices communicate with each other over the network with a communication protocol. Communication protocols function as an intermediary between applications operating on the devices and the network. Exemplary communication protocols include User Datagram Protocol (UDP) and transmission control protocol (TCP) to encapsulate messages generated by applications. In addition, a network protocol such as, Internet protocol (IP) may encapsulate the communication protocol to identify the device on the network.
The network protocol utilizes a host address of each of the devices as identification to establish peer-to-peer communications between devices. In addition, a port address of each of the devices is identified by the communication protocol. The port address includes a port number identifying the nature of use of the port, such as, for example, port 80 is usually for Hypertext Transfer Protocol (HTTP) traffic. Within a port, one or more sockets may be activated by applications operating on those devices. A socket is active as a TCP socket or a UDP socket when an application operating on a device is communicatively connected by TCP or UDP with an active socket (a TCP or UDP socket) of another application operating on another device. A passive socket is one that is not currently connected with a socket of another device. Each port may have a number of active sockets corresponding to open connections on the port along with a passive socket awaiting a connection. Peer-to-peer communication between active sockets (TCP or UDP sockets) of two devices is established based on the host address and the port address of each corresponding device.
Due to the inherent mobility of many of these devices, migration of an application among different devices is possible. Migration allows an application to move from one device (a source device) to another device (a target device) while maintaining the state of the application. For example, a user working with a server-based calendar application on his desktop personal computer to plan a business trip may migrate the application to his PDA to continue working when he leaves his desk. In these situations, the application may be transferred over the network from the source device to the target device.
When such a migration occurs, active sockets of the source device, as well as active sockets of other devices communicating with source device, are closed by the respective applications prior to migration. When the active sockets are closed, peer-to-peer communications with other devices on the network is lost. Following successful migration, sockets on the target device as well as sockets on devices previously communicating with the migrated application must be reopened and peer-to-peer communications reestablished. Since the host address changes when the application is migrated, the peer-to-peer communications must be completely reestablished. This may require significant specialized programming of the applications involved in the migration to re-open the sockets and re-establish peer-to-peer communications.
Prior art solutions to avoid having to completely reestablish peer-to-peer communications involve modifying the communication protocol. The communication protocol is modified to include application related information. The application related information avoids dependence on the host address to reestablish peer-to-peer communications. As such, when an application is migrated from one device to another, the peer-to-peer communications may also be migrated. Implementation of such a solution requires the modification of standard communication protocols such as transmission control protocol (TCP) or user datagram protocol (UDP) to include the additional information. Examples of this approach are described in publications entitled “Multi-homed TCP” by C. Huitema (Internet Draft, May 1995) and “TCP Connection Migration” by H. Balakrishnan and A. C. Snoeren (Internet Draft, November 2000).
A significant issue regarding modification of the standard communication protocol is deployment. All applications operating on all devices on the network must use the exact same communication protocol to communicate. As such, all the devices must be similarly modified to maintain communication compatibility. In addition, changes to the standard communication protocol may also require modification of the operating system of devices upon which the modified communication protocol is utilized.
Aside from the issues associated with deployment, most existing standard communication protocols have been developed by standards committees to provide uniformity among applications. For example, the TCP protocol is defined in a specification entitled “Transmission Control Protocol, Darpa Internet Program, Protocol Specification” RFC-793 (September 1981). Similarly, the UDP protocol is defined in a specification entitled “User Datagram Protocol” RFC 768 (Aug. 28, 2001). It may be difficult to convince these committees to accept and implement such modified standards. Without implementation of the modified standards, maintaining uniformity as well as promoting widespread acceptance and use may prove unattainable.